// 1：导入
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const session = require('express-session');
const config = require('./config/config.js');
const util = require('./utils/util.js');

// 2：创建app
const app = express();

// 集成body-parser中间件
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
// 使用 session 中间件
app.use(session({
    secret :  'secret', // 对session id 相关的cookie 进行签名
    resave : true,
    saveUninitialized: false, // 是否保存未初始化的会话
    cookie : {
        maxAge : config.maxAge, // 设置 session 的有效时间，单位毫秒
    },
    rolling:true
}));

// 登录拦截器
app.all('/*', function(request, respone, next){
    if (request.session['"'+request.body.phone+'"'] == request.body.phone) {
         next();
    }else {
        var arr = request.url.split('/');// 解析用户请求的路径
        for (var i = 0, length = arr.length; i < length; i++) {// 去除 GET 请求路径上携带的参数
            arr[i] = arr[i].split('?')[0];
        }
        // 判断请求路径是否为根、登录、注册、登出，如果是不做拦截
        if (arr.length > 2 && arr[1] == 'user' && (arr[2] == 'register' || arr[2] == 'login' || arr[2] == 'logout' || arr[2].indexOf('logina') > 0 )) {
            next();
        } else { 
             // 登录拦截
            util.returnMsg(9001, '未登录，禁止访问',request.body.phone,respone);
            request.session.originalUrl = request.originalUrl ? request.originalUrl : null;  // 记录用户原始请求路径
        }
    }
});

// 3：集成路由
const UserRouter = require(path.join(__dirname,'router/UserRouter.js'));
app.use('/user',UserRouter)

// 4：开启服务
app.listen(config.port, config.hostName, err=>{
    if (err) {
        console.log(err);
    }else{
        console.log('启动成功');
    }
})